/**
 *
 * @author Roninwz
 * @date 2019/1/11 下午18:23
 * @since 1.0.0
 */
// function foo() {
//   var a = b = 0;
//
//
//
//
//   // ...
// }

// foo();
// console.log(a)
// console.log(b)


//
// myname = "global"; // 全局变量
// function func() {
//   var myname;
//   console.log(myname); // "undefined"
//   myname = "local";
//   console.log(myname); // "local"
// }
// func();


//
// if (true) {
//   function foo() {
//     return 'first';
//   }
// }
// else {
//   function foo() {
//     return 'second';
//   }
// }
// console.log(foo());


// var bigModule = (function () {
//   var data = {};
//   data.add = function (a, b) {
//     return a + b;
//   };
//   return data;
// }());
// console.log(bigModule.add(10,20));


function diff(obj1, obj2) {
  var o1 = obj1 instanceof Object;
  var o2 = obj2 instanceof Object;
  if (!o1 || !o2) {/*  判断不是对象  */
    return obj1 === obj2;
  }

  if (Object.keys(obj1).length !== Object.keys(obj2).length) {
    return false;
    //Object.keys() 返回一个由对象的自身可枚举属性(key值)组成的数组,例如：数组返回下表：let arr = ["a", "b", "c"];console.log(Object.keys(arr))->0,1,2;
  }

  for (var attr in obj1) {
    var t1 = obj1[attr] instanceof Object;
    var t2 = obj2[attr] instanceof Object;
    if (t1 && t2) {
      return diff(obj1[attr], obj2[attr]);
    } else if (obj1[attr] !== obj2[attr]) {
      return false;
    }
  }
  return true;
}

var a = {
  name: {
    sex: 'man'
  }
};
var b = {
  name: {
    sex: 'man'
  }
};

var c = ['a', 'b'];
var d = ['a', 'b'];


var e = [{name: 'wz'}, {password: '123'}];
var f = [{name: 'wz'}, {password: '123'}];
console.log(diff(a, b));
console.log(diff(c, d));
console.log(diff(e, f));



